package org.jsola.hr.helper;

import org.jsola.common.SafeKit;
import org.jsola.hr.dto.FormGroupAddDTO;
import org.jsola.hr.dto.FormGroupUpdateDTO;
import org.jsola.hr.entity.FormGroupDO;
import org.jsola.hr.query.FormGroupQuery;
import org.jsola.hr.service.IFormGroupService;
import org.jsola.hr.vo.FormGroupVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 表单字段分组
 *
 * @author zhr
 */
@Component
public class FormGroupTestHelper extends BaseTestHelper {
    
    @Autowired
    private IFormGroupService formGroupService;

    /**
     * 生成add测试数据
     * @return FormGroupAddDTO
     */
    public FormGroupAddDTO getFormGroupAddDTO(){
        FormGroupAddDTO formGroupAddDTO = new FormGroupAddDTO();
        formGroupAddDTO.setModuleName(getRandomValue("varchar",100));
        formGroupAddDTO.setModuleCode(getRandomValue("varchar",100));
        formGroupAddDTO.setFormType(getRandomValue("varchar",100));
        formGroupAddDTO.setSubjectType(getRandomValue("varchar",100));
        formGroupAddDTO.setSubjectId(getRandomValue("varchar",100));
        formGroupAddDTO.setParentId(SafeKit.getLong(getRandomValue("bigint",11)));
        formGroupAddDTO.setSort(SafeKit.getLong(getRandomValue("bigint",10)));
        formGroupAddDTO.setLevel(SafeKit.getInteger(getRandomValue("int",10)));
        return formGroupAddDTO;
    }


    /**
     * 生成update测试数据
     * @return FormGroupUpdateDTO
     */
    public FormGroupUpdateDTO getFormGroupUpdateDTO(FormGroupVO formGroupVO){
        return formGroupService.selectDOById(formGroupVO.getId(), SITE_ID).to(FormGroupUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return FormGroupQuery
     */
    public FormGroupQuery getFormGroupQuery() {
        FormGroupQuery formGroupQuery = new FormGroupQuery();
        List<FormGroupDO> formGroupDOList = formGroupService.list(new FormGroupDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(formGroupDOList)) {
            FormGroupDO formGroupDO = formGroupDOList.get(0);
            formGroupQuery = formGroupDO.to(FormGroupQuery.class);
        }
        return formGroupQuery;
    }

    /**
     * 保存示例
     * @return FormGroupVO
     */
    public FormGroupVO saveFormGroupExample(){
        FormGroupAddDTO addDTO = this.getFormGroupAddDTO();
        FormGroupVO formGroupVO = formGroupService.save(addDTO,buildTokenUser());
        return formGroupVO;
    }


}

